from django.db import models
from aestate.work.Manage import Pojo
from aestate.work.Annotation import Table
from aestate.dbs._mysql import tag
from aestate.work.Config import MySqlConfig


# Create your models here.


class DatabaseConfig(MySqlConfig):
    def __init__(self):
        # 设置全局打印sql语句
        self.set_field('print_sql', True)
        # 设置全局插入语句返回最后一行id
        self.set_field('last_id', True)
        super(DatabaseConfig, self).__init__(host='127.0.0.1', port=3306,
                                             user='root', password='123456', db_type='pymysql', database='web_excel')


class table_template(Pojo):
    def __init__(self, **kwargs):
        """
        模板类对象
        """
        # 创建一个自增的主键id,并且不允许为空
        self.id = tag.intField(
            primary_key=True, auto_field=True, is_null=False, comment='auto add key')
        # 创建一个创建时间,并设置`auto_time=True`,在第一次保存时可以为其设置默认为当前时间
        self.create_time = tag.datetimeField(
            auto_time=True, is_null=False, comment='create time')
        # 创建一个更新时间,并设置`update_auto_time=True`,保证每次修改都会更新为当前时间
        self.update_time = tag.datetimeField(
            update_auto_time=True, is_null=False, comment='update time')
        # 设置config_obj未db_conf的对象,
        super(table_template, self).__init__(
            # 导入配置类
            config_obj=DatabaseConfig(),
            # 设置日志配置
            log_conf={
                # 保存位置
                'path': "/cacode/excel.cacode.ren/log/",
                # 是否允许保存日志
                'save_flag': True,
                # 当日志到达多少MB时删除日志重新记录
                'max_clear': 100
            },
            # 必备的字段,每一个Pojo对象都必须包含一个`**kwargs`
            **kwargs)


@Table(name='user', msg='user table')
class User(table_template):
    def __init__(self, *args, **kwargs):
        self.email = tag.varcharField(
            is_null=False, primary_key=True, length=255)
        self.password = tag.varcharField(is_null=False, length=32)
        self.ram = tag.intField(default=10240)
        super(User, self).__init__(*args, **kwargs)
